home *** CD-ROM | disk | FTP | other *** search
- /*
- ==============================================================================
- WordUp Graphics Toolkit Version 5.0
- Demonstration Program 22
-
- This is a small program 'template' to help you get started with the sprite
- library.
-
- *** PROJECT ***
- This program requires the files WSPR_WC.LIB and WGT5_WC.LIB to be linked.
-
- *** DATA FILES ***
- Make sure that INVADER.SPR is in your executable directory.
- WATCOM C++ VERSION
- ==============================================================================
- */
-
- #include <stdio.h>
- #include <dos.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <wgt5.h>
- #include <wgtspr.h>
-
- color palette[256];
- block sprites[20];
- int quit; /* if quit !=0, program quits */
- int oldmode;
-
- void looper (void); /* a routine which controls the sprites */
-
- void main (void)
- {
- if ( !vgadetected () )
- {
- printf("Error - VGA card required for any WGT program.\n");
- exit (0);
- }
- printf ("WGT Example #22\n\n");
- printf ("Sprite movement and animation is demonstrated in this short demo.\n");
- printf ("Press any key to end the program. Try inserting a delay to slow down the\n");
- printf ("animation.\n");
- printf ("\n\nPress any key to continue.\n");
- getch ();
-
- oldmode = wgetmode();
- vga256 ();
- wloadsprites (palette, "invader.spr", sprites, 0, 19);
- /* load first 50 sprites */
- wsetpalette (0, 255, palette);
-
- initialize_sprites (sprites); /* initialize them */
- maxsprite = 2; /* number of sprites on */
-
- /* Spriteon has the following format:
- Sprite number, x coord, y coord, sprite number in array of sprites
- Therefore sprite #1 would be displayed at 160,100 with sprite 1 in the array */
-
- spriteon (0, 160, 100, 1); /* turn on any sprites */
- spriteon (1, 10, 100, 3); /* you need */
-
- /* This move will go left 1, for 300 times, and right 1 for 300 times,
- and repeat */
-
- movex (1, "(1,300,0)(-1,300,0)R"); /* set up any movement */
- movexon (1); /* or animation needed */
-
-
- /* This animation will animate sprite 2 through a sequence of sprites
- in the sprite array and keep repeating. */
-
- animate (1, "(3,50)(4,50)(5,50)(4,50)R");
- animon (1);
-
- minit ();
-
- do {
- looper ();
- } while (!quit);
- getch ();
-
- mdeinit (); /* Deinitialize the mouse handler */
-
- spriteoff (0); /* turn off sprites */
- spriteoff (1);
- /* To be safe, turn off all sprites before ending program.
- This will free any memory used from them. */
-
- deinitialize_sprites ();
- wfreesprites (sprites, 0, 19); /* free memory */
-
- wsetmode (oldmode);
- }
-
-
- void looper(void)
- {
- erase_sprites (); /* clear the sprites */
-
- s[0].x = mouse.mx; /* any direct sprite movements must be placed */
- s[0].y = mouse.my; /* between erasespr and drawspr */
- /* This will set sprite one's coordinate to the mouse
- coordinates. Move it around! */
- /* notice how sprite #2 moves and animates on its own now!
- You don't need to change anything to make it move! */
-
- wretrace ();
- draw_sprites (1); /* draw them back on */
- if (kbhit ())
- quit = 1;
- }
-